/*
 * CanastoFisica.cpp
 *
 *  Created on: 17/11/2013
 *      Author: Juliansci
 */

#include "CanastoFisica.h"

CanastoFisica::CanastoFisica(b2World* world, float x, float y, float ancho, float alto, string tipo) : EntidadFisica(tipo){
	this->definicionCuerpoFisico->position.Set(x, y);
	this->definicionCuerpoFisico->type=b2_dynamicBody;
	this->cuerpoFisico = world->CreateBody(definicionCuerpoFisico);


	b2PolygonShape rectangulo1;
	b2Vec2 vec[8];

	vec[0] = b2Vec2(-ancho/2, 0);
	vec[1] = b2Vec2(-ancho/2, -alto/2);
	vec[2] = b2Vec2(ancho/2, -alto/2);
	vec[3] = b2Vec2(ancho/2, 0);
	rectangulo1.Set(vec,4);

	this->fixture = new b2FixtureDef();
	this->fixture->shape = &rectangulo1;
	this->fixture->density = 20.0f;
	this->cuerpoFisico->CreateFixture(this->fixture);

	b2BodyDef* definicionCostado = new b2BodyDef();
	definicionCostado->position.Set(x-ancho*7/16,y);
	definicionCostado->type = b2_dynamicBody;
	b2Body* cuerpoIzquierda = world->CreateBody(definicionCostado);
	b2PolygonShape rectangulo;
	rectangulo.SetAsBox(ancho/16,alto/2);
	b2FixtureDef* fixtureCuerpoCostado = new b2FixtureDef();
	fixtureCuerpoCostado->shape = &rectangulo;
	fixtureCuerpoCostado->density = 20.0f;
	cuerpoIzquierda->CreateFixture(fixtureCuerpoCostado);

	definicionCostado->position.Set(x+ancho*7/16,y);
	b2Body* cuerpoDerecha = world->CreateBody(definicionCostado);

	cuerpoDerecha->CreateFixture(fixtureCuerpoCostado);

	b2WeldJointDef* weldJointDef1 = new b2WeldJointDef();
	weldJointDef1->Initialize(this->cuerpoFisico,cuerpoIzquierda, cuerpoIzquierda->GetWorldCenter());
	world->CreateJoint(weldJointDef1);

	b2WeldJointDef* weldJointDef2 = new b2WeldJointDef();
	weldJointDef2->Initialize(this->cuerpoFisico,cuerpoDerecha, cuerpoDerecha->GetWorldCenter());
	world->CreateJoint(weldJointDef2);

	this->guardarInformacionDeEntidad();


}

CanastoFisica::~CanastoFisica() {
	// TODO Auto-generated destructor stub
}

